﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CI.Caja.BL;
using CI.Caja.BE;


namespace CI.Caja.MVC.Controllers
{
    public class SencilloController : Controller
    {
        //
        // GET: /Sencillo/

        public IBL_PuntoVenta PtoVentaService { get; set; }
        public IBL_Moneda MonedaService { get; set; }
        public IBL_Denominacion DenominacionService { get; set; }
        public IBL_Cajero_PuntoVenta Cajero_PuntoVentaService { get; set; }
        public IBL_Sencillo SencilloService { get; set; }
        public IBL_DetalleSencillo DetalleSencilloService { get; set; }
        public IBL_Comprobante ComprobanteService { get; set; }



        private ICollection<SelectListItem> ListarPtosVenta()
        {
            ICollection<SelectListItem> PtosVenta = new List<SelectListItem>();
            PtosVenta.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            foreach (BE_PuntoVenta ptoVenta in PtoVentaService.ListarPtoVenta())
            {

                if (Session["CodigoPtoVtaSeleccionado"] != null)
                {
                    if (Session["CodigoPtoVtaSeleccionado"].Equals(ptoVenta.IdPuntoVenta.ToString()))
                    {
                        PtosVenta.Add(new SelectListItem() { Value = ptoVenta.IdPuntoVenta.ToString(), Text = ptoVenta.Descripcion, Selected = true });
                    }
                    else
                    {
                        PtosVenta.Add(new SelectListItem() { Value = ptoVenta.IdPuntoVenta.ToString(), Text = ptoVenta.Descripcion });
                    }
                }
                else
                {
                    PtosVenta.Add(new SelectListItem() { Value = ptoVenta.IdPuntoVenta.ToString(), Text = ptoVenta.Descripcion });
                }
            }
            return PtosVenta;

        }



        private ICollection<SelectListItem> ListarTipoMoneda()
        {
            ICollection<SelectListItem> TiposMoneda = new List<SelectListItem>();
            TiposMoneda.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            foreach (BE_Moneda moneda in MonedaService.ListarMoneda())
            {
                if (Session["TipoMonedaSeleccionado"] != null)
                {
                    if (Session["TipoMonedaSeleccionado"].Equals(moneda.IdMoneda.ToString()))
                    {
                        TiposMoneda.Add(new SelectListItem() { Value = moneda.IdMoneda.ToString(), Text = moneda.Descripcion, Selected = true });
                    }
                    else
                    {
                        TiposMoneda.Add(new SelectListItem() { Value = moneda.IdMoneda.ToString(), Text = moneda.Descripcion });
                    }

                }
                else
                {
                    TiposMoneda.Add(new SelectListItem() { Value = moneda.IdMoneda.ToString(), Text = moneda.Descripcion });
                }
            }
            return TiposMoneda;

        }


        private ICollection<BE_Denominacion> ListarDenominacion()
        {
            if (Session["CodigoPtoVtaSeleccionado"] != null)
            {
                TempData["cajeroActivo"] = Cajero_PuntoVentaService.ObtenerCajeroPtoVta((string)Session["CodigoPtoVtaSeleccionado"]);
            }

            ICollection<BE_Denominacion> Denominacion = new List<BE_Denominacion>();
            if (!string.IsNullOrEmpty(Session["TipoMonedaSeleccionado"].ToString()))
            {
                Denominacion = DenominacionService.ListarDenominacion(Convert.ToInt32(Session["TipoMonedaSeleccionado"]));
                TempData["ImporteSistema"] = ComprobanteService.ObtenerImporteTotalIngresos(); //4000;
            }
            return Denominacion;

        }

        [HttpPost]
        public ActionResult ListarMonedaDenominacion(FormCollection fc)
        {
            Session["TipoMonedaSeleccionado"] = Request.Form["CodigoTipoMoneda"].ToString();
            TempData["denominacion"] = ListarDenominacion();
            return RedirectToAction("Create", "Sencillo");
        }

        [HttpPost]
        public ActionResult MuestraCajeroActivo(FormCollection fc)
        {

            Session["CodigoPtoVtaSeleccionado"] = Request.Form["CodigoPtoVta"].ToString();

            TempData["cajeroActivo"] = Cajero_PuntoVentaService.ObtenerCajeroPtoVta((string)Session["CodigoPtoVtaSeleccionado"]);

            return RedirectToAction("Create", "Sencillo");
        }




        //
        // GET: /Arqueo/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Arqueo/Create

        public ActionResult Create()
        {
            TempData["ptoVta"] = ListarPtosVenta();
            TempData["tipoMoneda"] = ListarTipoMoneda();
            return View();
        }


        private bool Validar()
        {
            // if (Request.Form["HdlblTotal"].ToString().Trim().Length == 0) {
            if (Session["TipoMonedaSeleccionado"] == null)
            {
                TempData["msgError"] = "<h3 style='color:red'>• Seleccione un Tipo de Moneda</h3>";


                return false;//RedirectToAction("Index");
            }

            if (Request.Form["chk1"] == null && Request.Form["chk2"] == null && Request.Form["chk3"] == null && Request.Form["chk4"] == null && Request.Form["chk5"] == null && Request.Form["chk6"] == null && Request.Form["chk7"] == null && Request.Form["chk8"] == null && Request.Form["chk9"] == null && Request.Form["chk10"] == null && Request.Form["chk11"] == null)
            {
                TempData["msgError"] = "<h3 style='color:red'>• Ingrese monto para alguna denominación </h3>";

                if (Session["TipoMonedaSeleccionado"] != null)
                {
                    TempData["denominacion"] = ListarDenominacion();
                }

                return false;//RedirectToAction("Index");
            }

            return true;
        }




        //
        // POST: /Arqueo/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {

                //Validaciones
                if (!Validar()) return RedirectToAction("Create");


                if (ModelState.IsValid)
                {

                    // Registrar Arqueo
                    BE_Sencillo sencillo = new BE_Sencillo();
                    //El IdArqueo se Generara automaticamente
                    sencillo.IdSolicitud = 0;
                    sencillo.IdCajero = "1";// Request.Form["HdCodCajero"].ToString();
                    sencillo.Fecha = DateTime.Today.ToShortDateString();
                    sencillo.Hora = DateTime.Now.ToString("HH:mm:ss"); //DateTime.Today.ToShortTimeString();
                    sencillo.IdPtoVta = 1;//Convert.ToInt32(Session["CodigoPtoVtaSeleccionado"]);
                    //sencillo.ImporteTotal = Convert.ToDecimal(Request.Form["HdlblTotal"].ToString());

                    // Registrar Detalle Arqueo

                    if (Request.Form["chk1"] != null)
                    {
                        Session["Schk1"] = Request.Form["chk1"].ToString().Replace(",", "");
                        
                    }

                    if (Request.Form["chk2"] != null)
                    {
                        Session["Schk2"] = Request.Form["chk2"].ToString().Replace(",", "");
                        
                    }


                    if (Request.Form["chk3"] != null)
                    {
                        Session["Schk3"] = Request.Form["chk3"].ToString().Replace(",", "");
                        
                    }

                    if (Request.Form["chk4"] != null)
                    {
                        Session["Schk4"] = Request.Form["chk4"].ToString().Replace(",", "");
                        
                    }

                    if (Request.Form["chk5"] != null)
                    {
                        Session["Schk5"] = Request.Form["chk5"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk6"] != null)
                    {
                        Session["Schk6"] = Request.Form["chk6"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk7"] != null)
                    {
                        Session["Schk7"] = Request.Form["chk7"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk8"] != null)
                    {
                        Session["Schk8"] = Request.Form["chk8"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk9"] != null)
                    {
                        Session["Schk9"] = Request.Form["chk9"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk10"] != null)
                    {
                        Session["Schk10"] = Request.Form["chk10"].ToString().Replace(",", "");
                       
                    }

                    if (Request.Form["chk11"] != null)
                    {
                        Session["Schk11"] = Request.Form["chk11"].ToString().Replace(",", "");
                       
                    }
                    

                    if (Request.Form["Text1"] != null)
                    {
                        Session["Stxt1"] = Request.Form["Text1"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt1"]);
                    }
                    if (Request.Form["Text2"] != null)
                    {
                        Session["Stxt2"] = Request.Form["Text2"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt2"]);
                    }
                    if (Request.Form["Text3"] != null)
                    {
                        Session["Stxt3"] = Request.Form["Text3"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt3"]);
                    }
                    if (Request.Form["Text4"] != null)
                    {
                        Session["Stxt4"] = Request.Form["Text4"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt4"]);
                    }
                    if (Request.Form["Text5"] != null)
                    {
                        Session["Stxt5"] = Request.Form["Text5"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt5"]);
                    }
                    if (Request.Form["Text6"] != null)
                    {
                        Session["Stxt6"] = Request.Form["Text6"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt6"]);
                    }
                    if (Request.Form["Text7"] != null)
                    {
                        Session["Stxt7"] = Request.Form["Text7"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt7"]);
                    }
                    if (Request.Form["Text8"] != null)
                    {
                        Session["Stxt8"] = Request.Form["Text8"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt8"]);
                    }
                    if (Request.Form["Text9"] != null)
                    {
                        Session["Stxt9"] = Request.Form["Text9"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt9"]);
                    }
                    if (Request.Form["Text10"] != null)
                    {
                        Session["Stxt10"] = Request.Form["Text10"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt10"]);
                    }
                    if (Request.Form["Text11"] != null)
                    {
                        Session["Stxt11"] = Request.Form["Text11"].ToString();
                        sencillo.ImporteTotal += Convert.ToInt32(Session["Stxt11"]);
                    }
                    sencillo = SencilloService.RegistrarSolicitudSencillo(sencillo);
                    if (Session["Schk1"] != null)
                    {
                        if (Session["Schk1"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 1;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 1;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt1"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk2"] != null)
                    {
                        if (Session["Schk2"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 2;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 2;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt2"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk3"] != null)
                    {
                        if (Session["Schk3"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 3;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 3;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt3"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk4"] != null)
                    {
                        if (Session["Schk4"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 4;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion =4;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt4"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }


                    if (Session["Schk5"] != null)
                    {
                        if (Session["Schk5"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 5;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 5;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt5"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk6"] != null)
                    {
                        if (Session["Schk6"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 6;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 6;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt6"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk7"] != null)
                    {
                        if (Session["Schk7"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 7;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 7;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt7"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }


                    if (Session["Schk8"] != null)
                    {
                        if (Session["Schk8"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 8;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 8;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt8"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }

                    if (Session["Schk9"] != null)
                    {
                        if (Session["Schk9"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 9;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 9;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt9"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }


                    if (Session["Schk10"] != null)
                    {
                        if (Session["Schk10"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 10;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 10;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt10"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }
                    }


                    if (Session["Schk11"] != null)
                    {
                        if (Session["Schk11"].ToString().ToUpper().Equals("ON"))
                        {
                            BE_DetalleSencillo detalleSencillo = new BE.BE_DetalleSencillo();
                            detalleSencillo.IdSolicitud = sencillo.IdSolicitud;
                            detalleSencillo.IdDetalle = 11;
                            detalleSencillo.IdMoneda = Convert.ToInt32(Session["TipoMonedaSeleccionado"]);
                            detalleSencillo.IdDenominacion = 11;
                            detalleSencillo.Cantidad = Convert.ToInt32(Session["Stxt11"]);
                            DetalleSencilloService.RegistrarDetalleSencillo(detalleSencillo);
                            
                        }

                    }
                    

                    TempData["msg"] = "1";

                    Session["CodigoPtoVtaSeleccionado"] = null;
                    Session["TipoMonedaSeleccionado"] = null;

                    return RedirectToAction("Create");

                }
                else
                {
                    return View();
                }

            }
            catch (Exception ex)
            {
                //ModelState.AddModelError(String.Empty, ex.Message);
                // TempData["cargos"] = ListarCargos();
                TempData["msgError"] = "<h3 style='color:red'>• " + ex.Message + "</h3>";
                //return View();
                return RedirectToAction("Create");
            }
        }

        //
        // GET: /Arqueo/Edit/5

        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Arqueo/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here

                return RedirectToAction("Create");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Arqueo/Delete/5

        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /Arqueo/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Create");
            }
            catch
            {
                return View();
            }
        }
        
        public ActionResult Index()
        {
            ICollection<BE_Sencillo> modelo = SencilloService.ListarSencillo();
            return View(modelo);
        }
    }
}
